/*
    作者：zx
    时间：2022.11.25
    描述：内存管理中位图的定义，以每一位管理内存页面
*/

#ifndef BITMAP_H
#define BITMAP_H

#include "comm/types.h"

typedef struct 
{
    // 位图中位的数量
    int bit_count;
    // 0表示未分配，1表示已分配
    uint8_t * bits;
}bitmap_t;

// 
void bitmap_init(bitmap_t * bitmap, uint8_t * bits, int bit_count, int init_bit);
// 位图占用的字节数
int bitmap_byte_count(bitmap_t * bitmap);
// 获取index位的值(0/1)
int bitmap_bit_get(bitmap_t * bitmap, int index);
// 设置index位开始的count个值
void bitmap_bit_set(bitmap_t * bitmap, int index, int bit, int count);
// 判断index位是否被使用
int bitmap_bit_(bitmap_t * bitmap, int index);
// 查找位图连续count个值为bit的地址
int bitmap_alloc_nbits(bitmap_t * bitmap, int count, int bit);
#endif // !BITMAP_H